//package algorithms.encryption.aes;
//
//import org.apache.commons.codec.binary.Base64;
//
//import javax.crypto.Cipher;
//import javax.crypto.KeyGenerator;
//import javax.crypto.SecretKey;
//import javax.crypto.spec.SecretKeySpec;
//import java.security.Key;
//import java.security.NoSuchAlgorithmException;
//
//public class AESUtil {
//    /**
//     * 编码格式
//     */
//    private static final String CHARSET = "UTF-8";
//
//    private static final String AES = "aes";
//
//    /**
//     * base64编码
//     *
//     * @param data
//     * @return
//     */
//    private static String encode(byte[] data) {
//        return Base64.encodeBase64String(data);
//    }
//
//    /**
//     * base64解码
//     *
//     * @param data
//     * @return
//     */
//    private static byte[] decode(String data) {
//        return Base64.decodeBase64(data);
//    }
//
//    /**
//     * 生产aes秘钥
//     *
//     * @return
//     * @throws NoSuchAlgorithmException
//     */
//    public static String genAESKey() throws NoSuchAlgorithmException {
//        KeyGenerator keyGenerator = KeyGenerator.getInstance(AES);
//        keyGenerator.init(128);
//        SecretKey secretKey = keyGenerator.generateKey();
//        String key = encode(secretKey.getEncoded());
//        return key;
//    }
//
//    /**
//     * aes加密
//     *
//     * @param dataStr 原始数据
//     * @param keyStr  base64的秘钥
//     * @return 加密数据base64
//     */
//    public static String encrypt(String dataStr, String keyStr) throws Exception {
//        Key key = new SecretKeySpec(decode(keyStr), AES);
//        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
//        cipher.init(Cipher.ENCRYPT_MODE, key);//加密模式
//        byte[] result = cipher.doFinal(dataStr.getBytes(CHARSET));
//        return encode(result);
//    }
//
//    /**
//     * aes解密
//     *
//     * @param dataStr 加密后base64的数据
//     * @param keyStr  base64的秘钥
//     * @return 原始数据
//     */
//    public static String decrypt(String dataStr, String keyStr) throws Exception {
//        Key key = new SecretKeySpec(decode(keyStr), AES);
//        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
//        cipher.init(Cipher.DECRYPT_MODE, key);//解密
//        byte[] result = cipher.doFinal(decode(dataStr));
//        return new String(result, CHARSET);
//    }
//
//    public static void main(String[] args) throws Exception {
//        String test = "12345dasdwqe";
//        String aesKey = genAESKey();
//        String encrypt = encrypt(test, aesKey);
//        System.out.println("加密："+encrypt);
//        System.out.println("解密："+decrypt(encrypt,aesKey));
//    }
//
//}
